import axios from 'axios'
import { ElMessage } from 'element-plus'

const service = axios.create({
  baseURL: '',
  timeout: 30000,
  headers: {
    'Content-Type': 'application/json; charset=utf-8'
  }
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    console.log('Request:', config.method.toUpperCase(), config.url)
    
    // 如果是上传文件，不处理数据
    if (config.headers['Content-Type']?.includes('multipart/form-data')) {
      return config
    }
    
    // 如果是 GET 请求，不处理数据
    if (config.method.toLowerCase() === 'get') {
      return config
    }
    
    // 只对 POST/PUT 等请求的 JSON 数据进行处理
    if (config.data && config.headers['Content-Type']?.includes('application/json')) {
      config.data = JSON.stringify(config.data)
    }
    
    return config
  },
  error => {
    console.error('Request error:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    console.log('Response:', response.config.url, response.status)
    
    // 如果响应是 JSON 格式，尝试解析
    const contentType = response.headers['content-type']
    if (contentType?.includes('application/json')) {
      try {
        return {
          ...response,
          data: typeof response.data === 'string' ? JSON.parse(response.data) : response.data
        }
      } catch (error) {
        console.warn('Failed to parse JSON response:', error)
        return response
      }
    }
    
    return response
  },
  error => {
    const message = error.response?.data?.message || error.message
    console.error('Response error:', error)
    ElMessage.error(message)
    return Promise.reject(error)
  }
)

export default service 